﻿//using FrameServer.Mysql.Service;
//using FrameServer.Net;
//using System;
//using System.Collections.Generic;

//namespace FrameServer
//{
//    class ChatMgr : Singleton<ChatMgr>
//    {
//        public readonly Queue<ChatInfo> chatInfoQ = new Queue<ChatInfo>();
//        private static readonly object _lock = new object();
//        private const int MAX_NUM = 50; //服务器最多可缓存的聊天消息数量
//        public void Init()
//        {
//            try
//            {
//                IList<ChatInfo> lists = ChatInfoService.GetLasteast(20);
//                foreach (var item in lists)
//                    chatInfoQ.Enqueue(item);
//            }catch(Exception e)
//            {
//                ChatInfoService.Enbale = false;
//                LogUtil.Log("数据库访问失败" + e, LogLevel.WARNING);
//            }
//        }

//        /// <summary>收到玩家上发的聊天</summary>
//        public void RcvChat(ChatInfo chatInfo) {
//            lock (_lock)
//            {
//                chatInfoQ.Enqueue(chatInfo);
//                if (chatInfoQ.Count > MAX_NUM)
//                    chatInfoQ.Dequeue();
//            }
//            //添加到数据库
//            ChatInfoService.AddSingleAsync(chatInfo);
//            //广播给所有玩家
//            foreach (TCPClientPeer peer in TCPServer.Instance.dictTcpPeer.Values)
//                peer.SendTcpMsg(S2CCode.DownOneChatInfo, chatInfo);
//        }

//        /// <summary>给指定玩家发送所有的聊天，多用于玩家初次登录时</summary>
//        public void SendAllChat(int uid)
//        {
//            lock (_lock)
//            {
//                ChatInfoList chatInfoList = new ChatInfoList();
//                foreach(var chatInfo in chatInfoQ)
//                {
//                    chatInfoList.ChatInfos.Add(chatInfo);
//                }
//                TCPServer.Instance.GetTcpPeer(uid)?.SendTcpMsg(S2CCode.DownAllChatInfos, chatInfoList);
//            }
//        }
//    }
//}
